home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / demo / eikdemo.zip / EIKONA.H < prev    next >
Text File  |  1995-03-03  |  23KB  |  525 lines

  1. /*--------------------------- EIKONA.H ------------------------------------*/
  2. /*EIKONA v.2.0 Last revision  22-9-94, I. Pitas    */
  3. /*-------------------------------------------------------------------------*/
  4. /*#include "windows.h"*/
  5. typedef unsigned char far* far* image;
  6. typedef float far* far* matrix;
  7. typedef int far* far* imatrix;
  8. typedef float far* vector;
  9.  
  10. /* Type definitions for edge following algorithms */
  11. typedef struct pixel {int row; int column; int cost;} CPIXEL;
  12. /*typedef struct pixel CPIXEL;*/
  13. typedef struct node { CPIXEL info; struct node far* link;} NODE;
  14. /*typedef struct node NODE;*/
  15.  
  16. /* Type definitions for chain codes */
  17. typedef unsigned char byte;
  18. typedef struct CHNODE {unsigned char num; struct CHNODE *next;} CHNODE;
  19. typedef struct CHAIN {CHNODE *start; CHNODE *end;} CHAIN;
  20.  
  21. /* Type definitions for polygon approximations */
  22. typedef struct PIXEL {int x; int y;} PIXEL;
  23. typedef struct LNODE {PIXEL num; struct LNODE *next;} LNODE;
  24. typedef struct LIST {LNODE *start; LNODE *end;} LIST;
  25.  
  26. /* Type definitions for quadtrees */
  27. typedef struct QNODE { unsigned char color;
  28.               struct QNODE *father;
  29.               struct QNODE *quad[4];
  30.              } QNODE;
  31.  
  32. typedef image far* pyramid;
  33.  
  34. /* Type definitions for Huffman coding */
  35. typedef struct symbol far* SPOINTER;
  36.  
  37. struct symbol {
  38.            float prob;
  39.            SPOINTER comp[2];
  40.           };
  41.  
  42.  
  43. /* Type definitions for LZW coding */
  44. typedef struct llink far*LPOINTER;
  45. struct llink {
  46.  int n;
  47.  LPOINTER next;
  48. };
  49.  
  50. /*-------------------------------------------------------------------------*/
  51. /* Global variables used in EIKONA, internal use only                      */
  52.  
  53. int NMAX, MMAX, INMAX, IMMAX, FNMAX, FMMAX ,NWMAX, MWMAX, NSIG;
  54.  
  55.  
  56. /*-------------------------------------------------------------------------*/
  57. /*Windows additions. Subroutines in win20.c */
  58. /*image  win_build_image(PHANDLE,int,int,int);
  59. void win_freeuc2(PHANDLE,int);
  60. matrix win_build_matrix(PHANDLE,int,int,int);
  61. void win_freef2(PHANDLE,int);
  62. imatrix win_build_imatrix(PHANDLE,int,int,int);
  63. void win_freei2(PHANDLE,int);
  64. int wincolorimdisp(HWND,LOGPALETTE *,int,image,image,image,int,int,int,int,int,int);
  65. int winbwimdisp(HWND,LOGPALETTE *,image,int,int,int,int,int,int);
  66. int refresh(int buffer,unsigned char display_type); */
  67.  
  68. /*-------------------------------------------------------------------------*/
  69. /* Subroutines in build20.c                                                */
  70.  
  71.  
  72. int init_eikona(int,int,int,int,int);
  73. image  build_image(int,int);
  74. vector build_vector(int);
  75. matrix build_matrix(int,int);
  76.  
  77. unsigned char far* far* matuc2(unsigned int, unsigned int); /* internal use*/
  78. float far* far* matf2(unsigned int, unsigned int);   /* internal use only */
  79. void mfreeuc2(unsigned char far* far*,unsigned int); /* internal use only */
  80. void mfreef2(float far* far*,unsigned int);          /* internal use only */
  81. int far* far* matin2(unsigned int,unsigned int);
  82. void mfreein2(int far* far*,unsigned int);
  83. int far* far* build_imatrix(int,int);
  84.  
  85. /*-------------------------------------------------------------------------*/
  86. /* Subroutines in bas20.c                                                  */
  87.  
  88. int add(image,image,image, int,int,int,int);
  89. int addc(image,image, int, int,int,int,int);
  90. int and(image,image,image, int,int,int,int);
  91. int bin(image, int,int,int,int);
  92. int clear(image, int, int,int,int,int);
  93. int clearmatrix(matrix, float, int,int,int,int);
  94. int clip(image,image, int,int, int,int,int,int);
  95. int copy(image,image, int,int, int,int,int,int);
  96. int copymatrix(matrix, matrix, int,int, int,int,int,int);
  97. int diff(image,image,image, int,int,int,int);
  98. int image2matrix(image, matrix, int,int, int,int,int,int);
  99. int matrix2image(matrix, image, int,int, int,int,int,int);
  100. int mix(image,image,image, float,float, int,int,int,int);
  101. int multc(image,image, float, int,int,int,int);
  102. int neg(image,image, int,int,int,int);
  103. int nltran(image,image, vector, int,int,int,int);
  104. int not(image,image, int,int,int,int);
  105. int or(image,image,image, int,int,int,int);
  106. int overmix(image,image,image,image, int,int,int,int);
  107. int pixr(image, int,int);
  108. int pixw(image, int,int, int);
  109. int rotim(image,image, float, int,int, int,int, int,int,int,int);
  110. int thres(image,image, int, int,int,int,int);
  111. int xor(image,image,image, int,int,int,int);
  112.  
  113. /*-------------------------------------------------------------------------*/
  114. /* Subroutines in io20.c                                                   */
  115.  
  116. int dump(image, char *, int,int,int,int);
  117. int dump_signal(vector, char *);
  118. int fromdisk(char *, image, int,int, int,int);
  119. int printim(image, char *, int,int,int,int);
  120. int todisk(image, char *, int,int,int,int);
  121. int loadmatrix(char *, matrix, int,int, int,int);
  122. int savematrix(matrix, char *, int,int,int,int);
  123. int print_hp(image, char*,int,int,int,int,int,int,int);
  124. int fromtga(char*,image,image,image,int,int,int,int, int*, int*);
  125. int totga(image,image,image,char*,int,int,int,int,unsigned char);
  126.  
  127. int print_chain(CHAIN);
  128. int fprint_chain(char *,int,int,CHAIN);
  129. int print_list(LIST);
  130. int fprint_list(char *,int,int,LIST);
  131.  
  132. /* Definitions for TIFF files */
  133. #define TRUE  1
  134. #define FALSE 0
  135. #define _II_  1
  136. #define _MM_  0
  137.  
  138. unsigned long *StripAddresses,*ByteCounts;
  139.  
  140. struct IFH {
  141.   unsigned int   ByteOrder;
  142.   unsigned int   Version;
  143.   unsigned long  FirstIfdOffset;
  144.   struct IFD     *Ifd;  /* Image File Directories are described as a list */
  145. };
  146.  
  147. struct IFD {
  148.   unsigned int      Nfields;
  149.   struct IFDentry  *Entries;
  150.   unsigned long     NextOffset;
  151.   struct IFD       *NextIfd; /* pointer to the next IFD */
  152. };
  153.  
  154. struct IFDentry {
  155.   unsigned int    Tag;
  156.   unsigned int    Type;
  157.   unsigned long   Length;
  158.   unsigned long   Value;
  159. };
  160.  
  161. enum{iWidth,iLength,iBits,iCompression,iSoffsets,iSamples,iRows,iSbytes,iXRes,
  162.      iYRes};
  163.  
  164. static struct IFD    *read_ifd();
  165. static struct IFD    *create_ifd();
  166. static unsigned int   read_word();
  167. static unsigned long  read_long();
  168. int find_StripParameters();
  169. int fromtiff(FILE *,image,int,int,int *,int *);
  170.  
  171. static struct IFD    *make_ifd();
  172. static struct IFD    *create_ifd();
  173. static unsigned int  reverse_word();
  174. static unsigned long reverse_long();
  175. static int           write_ifdentry();
  176. static unsigned char pack_in_byte();
  177. static int           get_datetime();
  178. int totiff(image,FILE *,int,int,int,int,int,int,int,char*,char*,char*);
  179.  
  180. /*-------------------------------------------------------------------------*/
  181. /* Subroutines in disp20.c                                                 */
  182.  
  183. int getvideomode(void);                       /* internal use only */
  184.  
  185. int bindisp(image, int, int,int, int,int,int,int);
  186. int clearscreen(void);
  187. int imdisp(image, int, int,int, int,int,int,int);
  188. int init_graphics(char *);
  189. int overdisp(image,image, int, int,int, int,int,int,int);
  190. int reset_graphics(void);
  191. int sigshow(vector, int, int,int, int,int);
  192.  
  193. int coeff(vector, int);
  194. int two_d_coeff(matrix, int,int);
  195.  
  196. /* Subroutines in assemply                                                */
  197. int disp13(image, int, int,int, int,int,int,int);
  198. int dispb13(image, int, int,int, int,int,int,int);
  199. int disp10(image, int, int,int, int,int,int,int, int);
  200. int dispb10(image, int, int,int, int,int,int,int, int);
  201.  
  202. int vgadisp(image,int,int,int,int,int,int);
  203. int video_mode(unsigned char);
  204. int extvgadisp(image,int,int,int,int,int,int,int);
  205. int extdisp(image,int,int,int,int,int,int,int);
  206. int extbindisp(image,unsigned char,int,int,int,int,int,int,int);
  207. unsigned long far* build_palette();
  208. int load_palette(unsigned long far*);
  209. int default_palette(unsigned long far*,int);
  210. int create_palette(image,image,image,unsigned long far*,int,int,int,int);
  211. int rgbtovga(image,image,image, image, unsigned long far*, int,int,int,int,int);
  212.  
  213. int view_pyramid(pyramid,int,int);
  214.  
  215. /*-------------------------------------------------------------------------*/
  216. /* Subroutines in color20.c                                                */
  217.  
  218. int cieRGB_to_XYZ(image,image,image,image,image,image,int,int,int,int);
  219. int XYZ_to_cieRGB(image,image,image,image,image,image,int,int,int,int);
  220. int XYZ_to_ciexyY(image,image,image,matrix,matrix,matrix,int,int,int,int);
  221. int ciexyY_to_XYZ(matrix,matrix,matrix,image,image,image,int,int,int,int);
  222. int XYZ_to_cieuvY(image,image,image,matrix,matrix,matrix,int,int,int,int);
  223. int cieuvY_to_XYZ(matrix,matrix,matrix,image,image,image,int,int,int,int);
  224. int XYZ_to_cieUVW(image,image,image,matrix,matrix,matrix,int,int,int,int);
  225. int cieUVW_to_XYZ(matrix,matrix,matrix,image,image,image,int,int,int,int);
  226. int XYZ_to_cieUsVsWs(image,image,image,matrix,matrix,matrix,int,int,int,int);
  227. int cieUsVsWs_to_XYZ(matrix,matrix,matrix,image,image,image,int,int,int,int);
  228. int XYZ_to_SthetaWs(image,image,image,matrix,matrix,matrix,int,int,int,int);
  229. int SthetaWs_to_XYZ(matrix,matrix,matrix,image,image,image,int,int,int,int);
  230. int XYZ_to_Lsasbs(image,image,image,matrix,matrix,matrix,int,int,int,int);
  231. int Lsasbs_to_XYZ(matrix,matrix,matrix,image,image,image,int,int,int,int);
  232. int XYZ_to_Lsusvs(image,image,image,matrix,matrix,matrix,int,int,int,int);
  233. int Lsusvs_to_XYZ(matrix,matrix,matrix,image,image,image,int,int,int,int);
  234.  
  235. ntscRGB_to_XYZ(image,image,image,image,image,image,int,int,int,int);
  236. XYZ_to_ntscRGB(image,image,image,image,image,image,int,int,int,int);
  237. ntscRGB_to_YIQ(image,image,image,image,image,image,int,int,int,int);
  238. YIQ_to_ntscRGB(image,image,image,image,image,image,int,int,int,int);
  239. RGB_to_CMY(image,image,image,image,image,image,int,int,int,int);
  240. CMY_to_RGB(image,image,image,image,image,image,int,int,int,int);
  241. RGB_to_CMYK(image,image,image,image,image,image,image,int,int,int,int);
  242. CMYK_to_RGB(image,image,image,image,image,image,image,int,int,int,int);
  243.  
  244. int RGB_to_HSI(image,image,image,matrix,matrix,matrix,int,int,int,int);
  245. int HSI_to_RGB(matrix,matrix,matrix,image,image,image,int,int,int,int);
  246. int RGB_to_HSV(image,image,image,matrix,matrix,matrix,int,int,int,int);
  247. int HSV_to_RGB(matrix,matrix,matrix,image,image,image,int,int,int,int);
  248. int RGB_to_HLS(image,image,image,matrix,matrix,matrix,int,int,int,int);
  249. int HLS_to_RGB(matrix,matrix,matrix,image,image,image,int,int,int,int);
  250.  
  251. static double value(double,double,double);
  252. double atan3(double,double);
  253.  
  254. /*-------------------------------------------------------------------------*/
  255. /* Subroutines in trans20.c                                                */
  256.  
  257. int arpsd(image,matrix,int,int,int,int,int);
  258. int blackman_tukey_psd(image,matrix,int,int,int,int);
  259. int convolution(matrix,matrix, matrix, int,int, int,int,int,int);
  260. int correlation(matrix,matrix, matrix, int,int, int,int,int,int);
  261. int fft1d(float *, float *,int,float *, float *); /* internal use */
  262. int fft2d(matrix,matrix, matrix,matrix, int, int,int, int,int,int,int);
  263. int fft2image(matrix,matrix, image, int,int, int,int,int,int);
  264. int magnphase2reim(matrix,matrix, matrix,matrix, int,int, int,int,int,int);
  265. int pt(matrix,matrix,int,int);
  266. int ptfft(matrix,matrix,int,int,int);
  267. int reim2magnphase(matrix,matrix, matrix,matrix, int,int, int,int,int,int);
  268. int windowcorrel(matrix,matrix,int,int,int,int);
  269.  
  270. int fft_IO_mc(FILE *, FILE *,int,int,int,int);
  271. int fft_IO_trans(FILE *,FILE *,int,int);
  272. int real_2d_fft(matrix,int,int);
  273. int refft2images(matrix,matrix,int,int);
  274. int fft(float *,float*,int,float *, float *,int); /* internal use only */
  275. int init(vector,vector,int);
  276. int DCT(matrix,vector,vector,int,int);
  277. int IDCT(matrix,vector,vector,int,int);
  278. int fftc(vector,vector,int,int); /*internal use*/
  279.  
  280. /*-------------------------------------------------------------------------*/
  281. /* Subroutines in filt20.c                                                 */
  282.  
  283. int cdfhist(vector, vector);
  284. int conv(image,image, matrix, int,int, int,int,int,int);
  285. int decim(image,image, int, int,int, int,int,int,int);
  286. int dither(image,image,int,int,int,int,int);
  287. int halftone(image,image, int, int,int,int,int);
  288. int hist(image, vector, int,int,int,int);
  289. int histeq(image,image, vector, int,int,int,int);
  290. int L2_error_norm(image,image,float*,int,int,int,int);
  291. int L2_error_ratio(image,image,image,image,float*,int,int,int,int);
  292. int l_filter(image,image, vector, int,int, int,int,int,int);
  293. int maxi(image,image, int,int, int,int,int,int);
  294. int median(image,image, int,int, int,int,int,int);
  295. int mini(image,image, int,int, int,int,int,int);
  296. int movav(image,image, int,int, int,int,int,int);
  297. int noise_add_gauss(image,image, float, int,int,int,int);
  298. int noise_add_laplace(image,image, float, int,int,int,int);
  299. int noise_add_uni(image,image, float, int,int,int,int);
  300. int noise_imp(image,image, float, int,int, int,int,int,int);
  301. int noise_mult_gauss(image,image, float, int,int,int,int);
  302. int noise_mult_uni(image,image, float, int,int,int,int);
  303. int order(image,image, int, int,int, int,int,int,int);
  304. float rand0(int *);        /* internal use only */
  305. int sort(int far *, int); /* internal use only */
  306. int sharp(image,image, int,int,int,int);
  307. int snr(image,image,float *,int,int,int,int);
  308. int zoom(image,image, int, int,int, int,int,int,int);
  309.  
  310. overlap_add(matrix,matrix,matrix,int,int,int,int,int,int,int,int);
  311. overlap_add_c(matrix,matrix,matrix,matrix,matrix,matrix,int,int,int,int,int,int,int,int);
  312. overlap_save(matrix,matrix,matrix,int,int,int,int,int,int,int,int);
  313. overlap_save_c(matrix,matrix,matrix,matrix,matrix,matrix,int,int,int,int,int,int,int,int);
  314. /*int wienerfrequency(matrix,matrix,matrix,matrix,matrix,float,int,int);*/
  315.  
  316. /*-------------------------------------------------------------------------*/
  317. /* Subroutines in nlfilt20.c                                                 */
  318. /* Warnings unresolved!!!!!!!!!!!!!
  319.  
  320. int adapt_l_filter(image,image,image,vector,float,int,int,int,int,int,int);
  321. int adapt_wei_median(image,image,int,float,int,int,int,int,int,int);
  322. int a_trimmed_filt(image,image,int,int,int,int,int,int,int);
  323. int bclose(image,image,image,int,int,int,int,int,int);
  324. int bdilate(image,image,int,int,int,int,int);
  325. int berode(image,image,int,int,int,int,int);
  326. int bopen(image,image,image,int,int,int,int,int,int);
  327. int dw_mtm(image,image,int,int,int,int,int,int,int,int,int);
  328. int harm_filt(image,image,matrix,int,int,int,int,int,int);
  329. int homom_filt(image,image,matrix,int,int,int,int,int,int);
  330. int imclose(image,image,image,image,int,int,int,int,int,int);
  331. int imdilate(image,image, image, int,int, int,int,int,int);
  332. int imerode(image,image, image, int,int, int,int,int,int);
  333. int imopen(image,image,image,image,int,int,int,int,int,int);
  334. int Lp_filt(image,image,float,matrix,int,int,int,int,int,int);
  335. int local_adapt_filt(image,image,float,int,int,int,int,int,int);
  336. int max_median(image,image,int,int,int,int,int,int);
  337. int medhybr(image,image,int,int,int,int,int,int);
  338. int mnn(image,image,int,int,int,int,int,int,int);
  339. int msd(image,image,image,image,int,int,int,int,int,int);
  340. int mtm(image,image,int,int,int,int,int,int,int);
  341. int mult_adapt_filt(image,image,float,int,int,int,int,int,int);
  342. int multistage_median(image,image,int,int,int,int,int,int);
  343. int optimal_L_filter(image,vector,int,int,int,int,int,int);
  344. int rec_median(image,image,int,int,int,int,int,int);
  345. int run_max(image,image,image,int,int,int,int,int,int);
  346. int run_median(image,image,int,int,int,int,int,int);
  347. int run_min(image,image,image,int,int,int,int,int,int);
  348. int sam(image,image,float,float,float,float,float,int,int,int,int,int,int,int,int,int,int,int,int);
  349. int sep_median(image,image,image,int,int,int,int,int,int);
  350. int skeleton(image,image,image,image,int,int,int,int,int);
  351. int top_hat(image,image,image,int,int,int,int,int,int);
  352. int wei_median(image,image,image,int,int,int,int,int,int); */
  353.  
  354. /*-------------------------------------------------------------------------*/
  355. /* Subroutines in code20.c                                                 */
  356.  
  357. int treeaccess(SPOINTER,int *,char *,struct symbol far*,
  358.         unsigned char far* far *);
  359. int hufcod(FILE * ,image , FILE *, int , int , int );
  360. int sendToOutput(FILE *,char far*,int *,unsigned char *);
  361. int huftree(vector,SPOINTER *,struct symbol far**,int);
  362. int initialize(SPOINTER *,struct symbol far**, vector,int);
  363. int find2min(SPOINTER *,int *,int);
  364. SPOINTER merge(SPOINTER *,int *);
  365. int decode_huffman(FILE *,image,SPOINTER,struct symbol far*,int,int);
  366. int reconstr_tree(FILE *,struct symbol far**,SPOINTER*,int);
  367.  
  368. int lzw(image,FILE*,int,int, int, int);
  369. init_lzw(int,int,int*,int far*,int far*,int*,int*,int*,LPOINTER*);
  370. int inT(int far*,int far*,int,unsigned char,int,LPOINTER*);
  371. int AddToTable(int far*,int,int,int far*,int,int*,int*,int*,int,LPOINTER*);
  372. int send2output(FILE*,int,int,int*,unsigned char*,
  373.          unsigned int*,unsigned char*);
  374. int invlzw(FILE*,image,int,int,int,int);
  375. init_invlzw(int,int,int*,int far* far*,int*,int*);
  376. int GetNextCode(int*,int,FILE*,unsigned char*,int*,
  377.         int,int*,int*,unsigned int*,unsigned char*);
  378. int AddEntry(int far* far*,int,int,int*,int*,int*,int);
  379. int WriteString(int far* far*,int,int*,int*,int,int,image);
  380.  
  381.  
  382. int arcoefficients(image,int,int,int,int,int,float [],float *);
  383. arsolve(float far* far*,float *,float *, int,int); /*internal use*/
  384. float corsample(image,image,int,int,int,int); /*internal use*/
  385.  
  386. /*-------------------------------------------------------------------------*/
  387. /* Subroutines in edge20.c                                                  */
  388.  
  389. int compass(image,image, int, int,int,int,int);
  390. int laplace(image,image, int,int,int,int);
  391. int line_detect(image,image, int, int,int,int,int);
  392. int point_detect(image,image, int,int,int,int);
  393. int prewitt(image,image, int,int,int,int);
  394. int range(image,image, int,int, int,int,int,int);
  395. int roberts(image,image, int,int,int,int);
  396. int sobel(image,image, int,int,int,int);
  397.  
  398. int hough(image,imatrix,int,int,int,int,float *, float *);
  399. int thres_par(int far* far*,int,int,int);
  400. int ihough(image,image,imatrix,int,int,int,int,float *,float *);
  401. int look_up_table(float *,float *,int);
  402. int edge_follow(image,image,int,int,int,int,int);
  403. int initialize_index(CPIXEL*);
  404. int edge_dynamic_prog(CPIXEL,CPIXEL,image,int,CPIXEL*,CPIXEL,NODE far**);
  405. int calculate_Fx(image,CPIXEL,int,CPIXEL*,CPIXEL);
  406. int sort_pixel(CPIXEL*);
  407. int stack2image(NODE far**,image);
  408. int find_direction(CPIXEL,CPIXEL);
  409. int modified_heuristic_edge_search(CPIXEL,CPIXEL,image,int,CPIXEL*,CPIXEL,
  410. NODE far**);
  411. int find_successors(image,CPIXEL,int,CPIXEL*,CPIXEL);
  412.  
  413. /*-------------------------------------------------------------------------*/
  414. /* Subroutines in list20.c                                                  */
  415.  
  416. void push(NODE far**,CPIXEL);
  417. CPIXEL pop(NODE far**);
  418.  
  419. CHNODE *getchnode();
  420. CHNODE *addchnode(byte, CHNODE *);
  421. CHNODE *searchch(byte, CHAIN);
  422. deletech(CHNODE *, CHNODE *);
  423.  
  424. LNODE *getnode();
  425. LNODE *search();
  426. LNODE *add_list();
  427.      delete();
  428.      print_list();
  429.      fprint_list();
  430.  
  431. /*-------------------------------------------------------------------------*/
  432. /* Subroutines in region20.c                                                  */
  433.  
  434. int count(image,int *,vector,int,int,int,int);
  435. int grass_fire(image,int,int, float far *,int,int,int,int);
  436. int mode_filter(image,image, int,int, int,int,int,int);
  437. int segm(image,image, int, int,int,int,int);
  438. int grass_label(image,image,int *,vector,int,int,int,int,int);
  439. int grass(image,image,int,int,int, float far*,int,int,int,int);/*internal use */
  440. int region_grow(image,image,int,int,int,int,int,int);
  441. int region_merge(image,image,int,int,int,int,int,int);
  442. int region_split(image,image,int,int,int,int,int *,int);
  443. int test_homogeneity(image,int,int,int,int,int);
  444. int region_split_merge(image,image,unsigned char far*,
  445.                int,int,int,int,int *,int,int);
  446. int rmerge(image,image,unsigned char far*,int,int,int,int,int *,int);
  447. int region_split_merge_c(image,image,unsigned char far*,int **,
  448.                int,int,int,int,int *,int,int);
  449. int rmerge_c(image,image,unsigned char far*, int **,
  450.                        int,int,int,int,int *,int);
  451.  
  452. float meanvalu(vector);
  453. float varianc(vector);
  454. float skewnes(vector);
  455. float kurtosi(vector);
  456. float entrop(vector);
  457.  
  458. int difhist(image,vector,int,int,int,int,int,int);
  459. float acs(vector);
  460. float entropy_d(vector);
  461. float m_d(vector);
  462.  
  463. int runlen(image,imatrix,int,int,int,int,int);
  464.  
  465. double T_R(imatrix);
  466. double sre(imatrix);
  467. double lre(imatrix);
  468. double gld(imatrix);
  469. double rld(imatrix);
  470. double rp(imatrix);
  471.  
  472. int glcmarr(image,matrix,int,int,int,int,int,int);
  473. float c_glcm(matrix);
  474. float asm_glcm(matrix);
  475. float idm_glcm(matrix);
  476. float entropy_glcm(matrix);
  477. float corr_glcm(matrix,float *,float *);
  478.  
  479. int psRtheta(matrix,vector,vector,int,int,int);
  480.  
  481. /*-------------------------------------------------------------------------*/
  482. /* Subroutines in shape20.c                                                */
  483.  
  484. int findch(image, int, float*,float*,float*,float*,float*, int,int,int,int);
  485.  
  486. int chain_code(image, CHAIN *, int *, int *,int,int,int,int,int);
  487. int chain_decode(image,CHAIN,int,int,int,int,int,int);
  488. CHAIN compress_chain(CHAIN);
  489. CHAIN decompress_chain(CHAIN);
  490.  
  491. int curve_split(PIXEL *, LIST *, int, double);
  492. int curve_merge(PIXEL *, LIST *, int, double);
  493. double dist(int,int,int,int,int,int); /* internal use */
  494. int create_curve(image, PIXEL *, int *, int,int,int,int,int);
  495.  
  496. int image2fd(image,vector,vector,int*,int,int,int,int,int);
  497. int fd2image(vector,vector,image,int,int,int,int,int,int);
  498.  
  499. int image_to_quadtree(image,int,int,int,int, QNODE **);
  500. int construct_quadtree(image, QNODE **, unsigned char, unsigned char *,int,int,int,int);
  501. int find_level(QNODE *,int *);
  502. int quadtree_to_image(QNODE *,image,int,int,int,int);
  503. int make_image(QNODE *,image,int,int,int,int,int);
  504. QNODE *create_node(QNODE *, unsigned char, unsigned char);
  505.  
  506. int pyramid_1(image,image,int,int);
  507. pyramid pyramid_alloc(int);
  508. int pyramid_free(pyramid,int);
  509. int pyramid_fill(image,pyramid,int);
  510. int pyramid_edge_detection(pyramid,pyramid,int,int,int);
  511. int edge_detector(image,int,int);
  512. int refine(pyramid,pyramid,int,int,int,int,int);
  513.  
  514. /*float find_moment(image,int,int,int,int,int,int,float,float);*/
  515. int calc_features_1(image,int,int,int,int,float *,float *,float *,float *,
  516.             float *,float *,float *);
  517. int turtle_follow(image,LIST *,int,int,int,int);
  518. float find_perimeter(LIST);
  519. float find_bending_energy_sum(LIST);
  520. /*int calc_features_2(LIST,float *,float *,float *,float *,float *, float);*/
  521.  
  522. int thin_1(image,int,int,int,int);
  523. int thin_2(image,int,int,int,int);
  524. 
  525.